The present invention generally relates to transfer request queue control systems and, more particularly to a transfer request queue control system which is applicable to a parallel computer system in which a plurality of processing units are connected.
In the parallel computer system (multi-processor system) in which a plurality of processing units are connected, a data transfer, which transfers data stored within a main storage of a first processing unit to a second processing unit, is carried out relatively frequently. Conventionally, the queuing of the data transfers with respect to the second processing unit is managed by a supervisor program (operating system) of the first processing unit. Accordingly, when the user makes a data transfer request with respect to the supervisor program of the first processing unit, the supervisor program generates an interrupt, with respect to the supervisor program, and the supervisor program then instructs the data transfer depending on the interrupt.
However, according to this conventional method, the interrupt is frequently generated by the data transfer request, and the overhead becomes large. In addition, no consideration has been given to how to cope with a situation where a plurality of users exist.
Hence, it is conceivable to prevent the overhead from becoming large by making the supervisor program intervene every time the data transfer request is made. According to this conceivable method, a write pointer and a read pointer are provided in a queue of the data transfer requests, and these pointers are managed directly by the user program. In addition, the access is made to the main storage of each processing unit using one virtual space. The data transfer is made in units of one packet, which is made up of a header and body data, and the header includes information such as the destination of the data and the length of the data. The queue of the data transfer requests corresponds to a list of the headers, and the pointer indicates a position within the list.
However, according to the conceivable method, when dequeuing the queue of the data transfer requests (hereinafter simply referred to as a transfer queue) the values of the write pointer and the read pointer must be made the same in order to stop the dequeuing if the dequeuing is to start when the write pointer and the read pointer differ. In other words, in order to stop the data transfer at an intermediate point, it is necessary to change the write pointer itself.
On the other hand, when there are a plurality of user programs and a plurality of transfer queues are provided, it is necessary to control the write pointer and the read pointer every time, since a portion of the transfer queue may be dequeued in a concentrated manner or a plurality of transfer queues may be dequeued uniformly. But the conventional parallel computer system is designed on the precondition that a single user executes a single user program, and is not designed on the precondition that a plurality of users will switch and execute the user programs.
For this reason, it requires a complex control, to control the write pointer and the read pointer, and there are problems in that the overhead becomes large and the processing performance of the system deteriorates.